package com.lrh.reggie.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lrh.reggie.dto.DishDto;
import com.lrh.reggie.entity.Dish;
import com.lrh.reggie.entity.SetmealDish;
import com.lrh.reggie.mapper.SetmealDishMapper;
import com.lrh.reggie.service.DishService;
import com.lrh.reggie.service.SetmealDishService;
import com.lrh.reggie.service.SetmealService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class SetmealDishServiceImpl extends ServiceImpl<SetmealDishMapper, SetmealDish> implements SetmealDishService {

    @Autowired
    private SetmealDishService setmealDishService;

    @Autowired
    private DishService dishService;

    /**
     * 用户端 套餐分类的 套餐里的菜品展示
     *
     * 当点击套餐时，会发送一个get请求，url如下，我猜测应该是展示该套餐中的菜品数据，
     * 我们可以给他返回一个DishDto，因为这个展示还涉及到一个菜品份数数据，
     * 根据f12响应那栏看出，这个数据光dish是展示不出来的，所以我们返回DishDto对象。
     *
     * /**  无法看到 菜品的图片
     *
     *      * 移动端点击套餐图片查看套餐具体内容
     *      * 这里返回的是dto 对象，因为前端需要copies这个属性
     *      * 前端主要要展示的信息是:套餐中菜品的基本信息，图片，菜品描述，以及菜品的份数
     * @param setmealId
     * @return
     */
    @Override
    public List<DishDto> setmealDishList(Long setmealId){  // 修改后
//    public List<SetmealDish> getUserSetmealDish(Long setmealId) {

        LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SetmealDish::getSetmealId,setmealId);
        //获取套餐里面的所有菜品  这个就是SetmealDish表里面的数据
        List<SetmealDish> setmealDishList = setmealDishService.list(queryWrapper);
//        return setmealDishList;

        List<DishDto> dishDtoList = setmealDishList.stream().map((item) -> {
            DishDto dishDto = new DishDto();
            BeanUtils.copyProperties(item, dishDto);

            //这里是为了把套餐中的菜品的基本信息填充到dto中，比如菜品描述，菜品图片等菜品的基本信息
            Long dishId = item.getDishId();
            Dish dish = dishService.getById(dishId);

            //将菜品信息拷贝到dishDto中
            BeanUtils.copyProperties(dish, dishDto);

            return dishDto;
        }).collect(Collectors.toList());

        return dishDtoList;
    }

}
